簡單介紹GO的基本型別
go的布林值分成true或是false,宣告布林變數時,預設為false
func main() {
var isFatMan bool
var weight int
weight = 80
if weight > 70 {
isFatMan = true
}
fmt.Println("weight over 70 is fatman:", isFatMan)
}
weight over 70 is fatman: true
if判斷式時,除了
if isFatMan ==true {
fmt.Println("mdfk~~i'm fatman")
}
也可以用
if isFatMan {
fmt.Println("mdfk~~i'm fatman")
}
//!視同false
if !isFatMan {
fmt.Println("mdfk~~i'm fatman")
}
如果有使用golang lint套件去檢查程式碼時,套件會建議使用下面寫法。
golang本身有以下幾種數字型態
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64
complex64 complex128
uint簡單說就是正整數,int就相反是帶負數的整數,長度大小就可以wiki一下,
懶人作法就直接int64到底。
如果需要進行數值運算,二邊的型態都需要一致才行喔,不然會噴ERR
package main
import "fmt"
func main() {
var a int
var b int32
var c int64
a = 10
b = 100
c = a + b
fmt.Println("c:", c)
}
invalid operation: a + b (mismatched types int and int32)
golang有三種型態,string、byte跟rune,rune因為沒用到,所以就不特別介紹它。
string跟byte可轉換
package main
import "fmt"
func main() {
var aa string
var bb []byte
aa = "i'm fatman"
bb = []byte(aa)
fmt.Println("aa:", aa)
fmt.Println("bb:", bb)
fmt.Println("string bb:", string(bb))
}
aa: i'm fatman
bb: [105 39 109 32 102 97 116 109 97 110]
string bb: i'm fatman
簡單來說ARRAY需要宣告長度,SLICE不需要,使用上SLICE相對來說方便,
尤其需要塞一個不定長度的陣列值時,用SLICE才是最方便的作法,
更詳細的內容可以考慮這篇文章https://michaelchen.tech/golang-programming/array-slice/
陣列的情境
package main
import "fmt"
func main() {
imarray := [4]string{"A", "B", "C", "D"}
fmt.Println("i'm array:", imarray)
}
i'm array: [A B C D]
如果宣告的長度小於陣列數目時就會噴掉啦
package main
import "fmt"
func main() {
imarray := [3]string{"A", "B", "C", "D"}
fmt.Println("i'm array:", imarray)
}
array index 3 out of bounds [0:3]
切片的情境
package main
import "fmt"
func main() {
imslice := []string{"A", "B", "C", "D"}
fmt.Println("i'm slice:", imslice)
}
i'm slice: [A B C D]
使用上是不是slice比較方便阿,可以減少攻城屍手殘沒算好陣列數目,導致系統噴掉。
以上是golang中最最基本的型態,下篇就會講到比較進階的型態